
const { ipcMain,BrowserWindow } = require('electron')


const getSource = (url) => {
    
    return new Promise((resolve,reject) => {

         //根据url创建一个窗口
        const win = new BrowserWindow({
            width:500,
            height:500,
            // 构建完了窗口，但是不显示
            show:false,
            webPreferences:{
                // 不构建窗口，只在内存中运行
                offscreen:true
            }
        })

        win.loadURL(url)

        //等待网站资源全部构建完毕
        win.webContents.on('did-finish-load', async () => {
            //获取网站标题
            const title = win.getTitle()

            //由于win.webContents.capturePage()是一个异步函数。如果抓不到数据
            //可能会出错，使用trycatch
            try {
            //捕获页面
            //获取到的是nativeImage对象
            
            const image = await win.webContents.capturePage()

            if(image.isEmpty()) {
                resolve({
                    msg:'错误!站点无法访问!'
                })
            }

            //获取图片路径(经过base64转码之后的路径)
            const screenshot = image.toDataURL()
            

            resolve ({
                title,
                screenshot,
                url
            })

            }catch(e) {
                
                reject(e)
            }

        })

    })

}

//ipcMain.handle本身是可以作异步操作
ipcMain.handle('on-url-event', async (e,url) => {
        
    const result = await getSource(url)

    return result
    
})


